package com.ease;

import java.util.HashMap;
import java.util.Map;

public class Thirteen_RomanToInt {


    public static void main(String[] args) {
        Thirteen_RomanToInt Roman=new Thirteen_RomanToInt();
        int num = Roman.romanToInt("CCCXXIV");
        System.out.println(num);
    }

//    public int romanToInt(String s) {   //暴力破解
//        int length = s.length();
//        int result=0;
//        for (int i = 0; i < length; i++) {
//            if(s.charAt(i)=='I'){
//                 result+=1;
//            }
//            if (s.charAt(i)=='V'){
//                 result+=5;
//            }
//            if (s.charAt(i)=='X'){
//                 result+=10;
//            }
//            if (s.charAt(i)=='L'){
//                 result+=50;
//            }
//            if (s.charAt(i)=='C'){
//                 result+=100;
//            }
//            if (s.charAt(i)=='D'){
//                 result+=500;
//            }
//            if (s.charAt(i)=='M'){
//                 result+=1000;
//            }
//        }
//        if(s.contains("IV")){
//            result-=2;
//        }
//        if(s.contains("IX")){
//            result-=2;
//        }
//        if(s.contains("XL")){
//            result-=20;
//        }
//        if(s.contains("XC")){
//            result-=20;
//        }
//        if(s.contains("CD")){
//            result-=200;
//        }
//        if(s.contains("CM")){
//            result-=200;
//        }
//
//        return result;
//    }



//
//class Solution {
    Map<Character, Integer> symbolValues = new HashMap<Character, Integer>() {{
        put('I', 1);
        put('V', 5);
        put('X', 10);
        put('L', 50);
        put('C', 100);
        put('D', 500);
        put('M', 1000);
    }};

    public int romanToInt(String s) {
        int ans = 0;
        int n = s.length();
        for (int i = 0; i < n; ++i) {
            int value = symbolValues.get(s.charAt(i));
            if (i < n - 1 && value < symbolValues.get(s.charAt(i + 1))) {
                ans -= value;
            } else {
                ans += value;
            }
        }
        return ans;
    }




//    public int romanToInt(String s) {
//        int sum = 0;
//        int preNum = getValue(s.charAt(0));
//        for(int i = 1;i < s.length(); i ++) {
//            int num = getValue(s.charAt(i));
//            if(preNum < num) {
//                sum -= preNum;
//            } else {
//                sum += preNum;
//            }
//            preNum = num;
//        }
//        sum += preNum;
//        return sum;
//    }
//
//    private int getValue(char ch) {
//        switch(ch) {
//            case 'I': return 1;
//            case 'V': return 5;
//            case 'X': return 10;
//            case 'L': return 50;
//            case 'C': return 100;
//            case 'D': return 500;
//            case 'M': return 1000;
//            default: return 0;
//        }
//}
}


